<?php

/**
* Incloem la classe AccesBBDD per poder conectar a la Base de Dades
*/
include_once("AccesBBDD.class.php");	

/**
* Classe grupsVO, es la classe Value Object de grups.
*/
class grupsVO{
	//Atribut
	var $id_grup=0;
	var $nom="";
	var $any="";
}

/**
* Classe grups (es la que porta el metodes DAO) 
*/
class grups{

	function retornarGrupsSegonsCurs($id_tipus_curs) 
	{
		$sql="SELECT * FROM cursos t1, grups t2 WHERE t1.id_tipus_curs='".$id_tipus_curs."' AND t1.id_grup = t2.id_grup;";

		$bd=new AccesBBDD();
		$bd->conectar();
		$resultat=$bd->consultar($sql);
		$bd->desconectar();
	
		$num_rows = mysql_num_rows($resultat);
		$grups[$num_rows] = new GrupsVO();
		$i = -1;
		
		while ($fila = mysql_fetch_assoc($resultat)) {
			$i++;
			$grups[$i]->id_grup = $fila['id_grup'];
			$grups[$i]->nom = $fila['nom'];
			$grups[$i]->any = $fila['any'];			
		}		
		return $grups;
	}
	
	/**
	* Métode que retorna totes les dades d'un determinat grup en funció del id_grup que li passem
	*/
	function consultar_grup($id_grup){
		$bd=new AccesBBDD();
		$bd->conectar();
		$result = $bd->modificar("SELECT * FROM `grups` WHERE id_grup='".$id_grup."'");
		$bd->desconectar();
		while ($row = mysql_fetch_array($result)) {
			$vo = new TpEstdVO($row['id_grup'],$row['nom'],$row['any']);
			array_push($list,$vo);
		}
		return $list;
	}
	
	/**
	* Métode on passem el nom, l'any, el codi i el id_tipus_grup (el curs al qual pertany el grup) d'un grup i que retorna el seu id_grup
	*/
	function buscar_idgrup($nom_grup,$any,$codi,$id_tipus_curs){
		$bd=new AccesBBDD();
		$bd->conectar();
		$resultat = $bd->consultar("SELECT T2.id_grup FROM (T1 `cursos`,T2 `grups`) WHERE (T1.id_grup=T2.id_grup) AND (T2.nom='".$nom."') AND (T2.any='".$any."') AND (T2.codi='".$codi."') AND (T1.id_tipus_curs='".$id_tipus_curs."')");
		$bd->desconectar();
		return $resultat;
	} 

	/**
	* Métode que busca i retorna totes les dades del grup/s en funció de la/les dada/es d'aquest/s que li passem
	*/
	function buscar_grup($nom,$any,$codi,$id_tipus_curs){
		$bd=new AccesBBDD();
		$bd->conectar();

		$sql = "SELECT * FROM `grups` WHERE ";

		if ($nom != "") {
			$sql .= "nom = '".$nom."'";
		}
		
		if ($any != "") {
			if ($nom != "") {
				$sql .= " AND ";
			}
			$sql .= "any = '".$any."'";
		}
		
		if ($codi != "") {
			if (($nom != "") || ($any != "")) {
				$sql .= " AND ";
			}
			$sql .= "codi = '".$codi."'";	
		}

		if ($id_tipus_curs != "") {
			if (($nom != "") || ($any != "") || ($codi != "")) {
				$sql .= " AND ";
			}
			$sql .= "id_tipus_curs = '".$id_tipus_curs."'";	
		}	
		$result = $bd->consultar($sql);
		$bd->desconectar();
		while ($row = mysql_fetch_array($result)) {
			$vo = new TpEstdVO($row['id_grup'],$row['nom'],$row['any']);
			array_push($list,$vo);
		}
		return $list;		
	}
	
	/**
	* Métode per cosultar si existeix un determinat grup a la taula gups, retorna el numero de registres trobats:
	* Si retorna 0 es que no existeix
	* Si retorna 1 (en teoria no pot retornar més de 1 ja que no poden estar repetits els grups dins d'un mateix curs)
	*/
	function existeix_grup($nom,$any,$codi,$id_tipus_curs){	
		$bd=new AccesBBDD();
		$bd->conectar();
		$resultSet1 = $bd->consultar("SELECT * FROM (`cursos` T1, `grups` T2) WHERE (T1.id_grup=T2.id_grup) AND (T2.nom='".$nom."') AND (T2.any='".$any."') AND (T2.codi='".$codi."') AND (T1.id_tipus_curs='".$id_tipus_curs."')");
		$num_rows = mysql_num_rows($resultSet1);
		$bd->desconectar();
		return $num_rows;
	}
	


	/**
	* Métode que retorna tots els noms dels grups d'un curs 
	*/
	function buscar_noms_grups_curs($id_tipus_curs){
		$bd=new AccesBBDD();
		$bd->conectar();
		$resultSet1 = $bd->consultar("SELECT T2.* FROM (`cursos` T1,`grups` T2) WHERE (T1.id_grup=T2.id_grup) AND (T1.id_tipus_curs='".$id_tipus_curs."')");
		$result = mysql_fetch_array($resultSet1);
		$bd->desconectar();
		while ($row = mysql_fetch_array($result)) {
			$vo = new GrupsVO($row['id_grup'],$row['nom'],$row['any']);
			array_push($list,$vo);
		}
		return $list;
	}
	
	/**
	* Métode per assignar un grup a un curs
	* Parametres requerits: id_grup i id_tipus_curs
	*/
	function assignar_grup_a_curs($id_grup,$id_tipus_curs){
		$bd=new AccesBBDD();
		$bd->conectar();
		$resultat = $bd->modificar("INSERT INTO `cursos` (`id_grup`,`id_tipus_curs`) VALUES ('".$id_grup."','".$id_tipus_curs."')"); 
		$bd->desconectar();
		return $resultat;
	}

	/**
	* Métode que inserta un nou grup a la taula grups:
	* Primer fa una crida al métode existeix_grup per veure si el grup ja existeix o no
	* Si no existeix, el crea
	* I després l'assigna a un curs
	* retorna 1 o 0
	*/
	function crear_grup($nom,$any,$codi,$id_tipus_curs){
		$num_rows=1;
		$resultat=0;
		
		// cridem al métode existeix
		$num_rows = $this->existeix_grup($nom,$any,$codi,$id_tipus_curs);
		
		// si no existeix creem el grup
		if($num_rows==0){
			$bd2=new AccesBBDD();
			$bd2->conectar();
			
			$insertat = $bd2->modificar("INSERT INTO `grups` (`nom`,`any`,`codi`) VALUES ('".$nom."','".$any."','".$codi."')");
			
			// comprobem que s'hagi insertat bé
			if ($insertat == 1){		
				// Inmediatament recuperem l'últim id_grup que que s'ha generat per a poder assignar-lo despre´s a un curs
				$resultSet1 = $bd2->consultar("SELECT Max(`id_grup`) As 'id_grup' FROM `grups`");			
				$ultim = mysql_fetch_array($resultSet1);
				$id_grup = $ultim['id_grup'];
			}else{return $insertat;}
				
			// ...i l'assignem a un curs
			$resultat = $this->assignar_grup_a_curs($id_grup,$id_tipus_curs);
			
			// retorn de la confirmació
			$bd2->desconectar();
			return $resultat;
			
		//si el grup ja existeix...		
		}else{
			$bd2->desconectar();
			return $resultat;
		}
	}
	
	/*
	* Métode eliminar_grup: elimina un grup de la base de dades, parametre requerit: id_grup 
	*/
	function eliminar_grup($id_grup){
		$bd=new AccesBBDD();
		$bd->conectar();
		$bd->modificar("DELETE * FROM `grups` WHERE id_grup='".$id_grup."'");
		$bd->modificar("DELETE * FROM `cursos` WHERE id_grup='".$id_grup."'");
		$bd->modificar("DELETE * FROM `alumnes` WHERE id_grup='".$id_grup."'");
		$bd->modificar("DELETE * FROM `professors` WHERE id_grup='".$id_grup."'");
		$bd->desconectar();
		return "Eliminació realitzada amb éxit";
	}

	
	//----------------------------------------------------------------------------------------------------------
	
	// funcio test1: INSERT (funciona)
	function test1($nom,$any){
		$bd=new AccesBBDD();
		$bd->conectar();
		$resultat = $bd->modificar("INSERT INTO `grups` (`nom`,`any`) VALUES ('".$nom."','".$any."')");
		$bd->desconectar();
		return $resultat;
	}
	
	// funcio test2: SELECT (funciona) -> cal recuperar amb: $resultat['id_grup']
	function test2($nom){
		$bd=new AccesBBDD();
		$bd->conectar();
		$resultSet1 = $bd->consultar("SELECT * FROM `grups` WHERE nom='".$nom."'");
		$resultat= mysql_fetch_array($resultSet1);
		$bd->desconectar();
		return $resultat;
	}
	
	// funcio test3: SELECT num_rows (funciona)
	function test3(){
		$bd=new AccesBBDD();
		$bd->conectar();
		
		// COMBINACIÓ BONA 1
		//$resultSet1 = $bd->consultar("SELECT COUNT(*) as 'total' FROM `tipus_curs`");
		//$resultat = mysql_fetch_array($resultSet1);
		//$num_rows = $resultat['total'];
		
		// COMBINACIÓ BONA 2
		$resultSet1 = $bd->consultar("SELECT * FROM `grups`");
		$num_rows = mysql_num_rows($resultSet1);
		
		$bd->desconectar();
		return $num_rows;
	}
	
	// funcio test4: SELECT id_grup de ultim registre introduit (funciona)
	function test4(){
		$bd=new AccesBBDD();
		$bd->conectar();
		$resultSet1 = $bd->consultar("SELECT Max(`id_grup`) As 'id_grup' FROM `grups`");			
		$resultat = mysql_fetch_array($resultSet1);
		$id_grup = $resultat['id_grup'];
		$bd->desconectar();
		return $id_grup;
	}
}
?>